package com.mingqi.enetconnected.net.request;

import android.content.Context;

import com.google.gson.reflect.TypeToken;
import com.mingqi.enetconnected.data.bean.config.Config;
import com.mingqi.enetconnected.data.bean.config.Dictionary;
import com.mingqi.enetconnected.data.bean.config.Globalization;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.List;

/**
 * 12201 ConfigRemoteService
 * 共3个，已完成
 */
public class ConfigRemoteRequest {
    /**
     * 查询配置项
     */
    public final static String SEARCH_CONFIG_ITEMS_URL = "/v1/plat/configuration/orderItems";

    /**
     * 查询字典
     */
    public final static String SEARCH_CONFIG_DICT_URL = "v1/plat/configuration/dicts/app";

    /**
     * 查询国际化资源文件
     */
    public final static String SEARCH_CONFIG_TEXT_URL = "/v1/plat/configuration/texts";

    /**
     * 查询配置项
     * @param cxt
     * @param appCode       应用编码
     * @param funCode       功能编码
     * @param updateTime    更新时间，默认为当天凌晨至现在
     * @param pageIndex     页码
     * @param pageSize      分页的大小，最大为100
     * @return
     * @throws
     */
    public static Config getConfigItems(Context cxt, String appCode, String funCode, String updateTime, int pageIndex, int pageSize) throws Exception {
        Type types = new TypeToken<Config>() {
        }.getType();
        Communicator<Config> communicator = new Communicator<>(cxt, SEARCH_CONFIG_ITEMS_URL);
        HashMap<String, String> params = new HashMap<>();
        params.put("appCode", appCode);
        params.put("funCode", funCode);
        params.put("updateTime", updateTime);
        params.put("pageIndex", pageIndex + "");
        params.put("pageSize", pageSize + "");

        // TODO: 2018/9/19 注意返回值
        return (Config) communicator.get(params, types);
    }

    /**
     * 查询字典
     * @param cxt
     * @param appCode       应用编码
     * @param funCode       功能编码
     * @param updateTime    更新时间，默认为当天凌晨至现在
     * @param pageIndex     页码
     * @param pageSize      分页的大小，最大为100
     * @return
     * @throws
     */
    public static List<Dictionary> getConfigDict(Context cxt, String appCode, String funCode, String updateTime, int pageIndex, int pageSize) throws Exception {
        Type types = new TypeToken<List<Dictionary>>() {
        }.getType();
        Communicator<List<Dictionary>> communicator = new Communicator<>(cxt, SEARCH_CONFIG_DICT_URL);
        HashMap<String, String> params = new HashMap<>();
        params.put("appCode", appCode);
        params.put("funCode", funCode);
        params.put("updateTime", updateTime);
        params.put("pageIndex", pageIndex + "");
        params.put("pageSize", pageSize + "");
        return (List<Dictionary>) communicator.get(params, types);
    }

    /**
     * 查询国际化资源文件
     * @param cxt
     * @param appCode       应用编码
     * @param funCode       功能编码
     * @param updateTime    更新时间，默认为当天凌晨至现在
     * @param locale        语言，默认为 zh_CN
     * @param pageIndex     页码
     * @param pageSize      分页的大小，最大为100
     * @return
     * @throws
     */
    public static List<Globalization> getConfigText(Context cxt, String appCode, String funCode, String updateTime, String locale, int pageIndex, int pageSize) throws Exception {
        Type types = new TypeToken<List<Globalization>>() {
        }.getType();
        Communicator<List<Globalization>> communicator = new Communicator<>(cxt, SEARCH_CONFIG_TEXT_URL);
        HashMap<String, String> params = new HashMap<>();
        params.put("appCode", appCode);
        params.put("funCode", funCode);
        params.put("updateTime", updateTime);
        params.put("locale", locale);
        params.put("pageIndex", pageIndex + "");
        params.put("pageSize", pageSize + "");
        return (List<Globalization>) communicator.get(params, types);
    }

}
